Non-volatile memory systems often include multiple types of memory units, such as user capacity memory blocks and over-provisioning memory blocks. User capacity memory blocks are generally memory blocks that the non-volatile memory system makes available to a host device for the storage of user data. Over-provisioning memory blocks are generally spare memory blocks that the non-volatile memory system maintains for uses other than storing user data, such as a workspace for performing background operations such as garbage collection operations and data reconciliation operations.
In conventional non-volatile memory systems, as a host system sends data to the non-volatile memory system for storage, a controller of the memory system directly stores that data in the user capacity memory blocks. Accordingly, the rate at which the non-volatile memory system may receive data from the host system for storage at the memory system may be limited by the speed at which the controller may store data to the user capacity memory blocks.
As the performance of host systems increase, it is desirable for non-volatile memory systems to increase the amount of data that the memory system may accept from the host system for storage in a given period of time.